1. The Field of the Invention
The present invention relates to query processing; and more specifically, to forward-only evaluations for XPATH inverse query processing.
2. Background and Related Art
Computing technology has transformed the way we work and play. Computing systems now take a wide variety of forms including desktop computers, laptop computers, tablet PCs, Personal Digital Assistants (PDAs), household devices and the like. In its most basic form, a computing system includes system memory and one or more processors. Software in the system memory may be executed by the processor to direct the other hardware of the computing system to perform desired functions.
The ability to process information is essential to the performance of a computing system. One type of processing is called “filtering”. In particular, a filter is a query that returns true or false against an input. When a vast collection of filters (e.g., a filter table) are used against the input, each filter may test for different characteristics of the input. Accordingly, some of the filters may return true and some may return false, depending on the characteristics of the input. Regardless, the filters can provide significant information regarding the input. This allows the computing system to take appropriate action given the characteristics of the input. The filter table receives an input, and tests multiple queries against that input. In contrast, direct querying entails receiving a query, and testing the multiple inputs against that query. According, a filter table is a type of inverse query engine.
An XPATH filter engine is a type of inverse query engine in which the filters are defined using the XPATH language. The message bus filter engine matches filters against eXtensible Markup Language (XML) to evaluate which filters return true, and which return false. In one conventional implementation, the XML input may be a Simple Object Access Protocol (SOAP) envelope or other XML document received over a network.
In conventional inverse query engines, when a filter table is to be evaluated again an input, each filter is evaluated by executing a particular set of instructions. Each filter is evaluated independently by executing the particular set of instructions corresponding to each filter. In systems in which there are numerous filters, it may take considerable processing resources and time to perform the full evaluation on the input. This may become particularly problematic if inputs are frequently received for such evaluation.
For example, in a network environment, it is possible for a server to receive many network messages, each potentially representing one or more inputs to the inverse filter engine. Even if the server has rich processing resources, the server may become burdened or may simply not be able to handle all of the requests. Yet, inverse query engines are an effective way for computing systems to handle incoming information. Accordingly, what is desired is a mechanism that reduces the processing resources required to process an inverse query engine against an input.